1. Field of the Invention
This invention relates to optimizing parallel computing operations. More specifically, the invention relates to autonomously allocating virtual storage and determining a maximum supported degree of parallelism for a computer software system such as a database management system (DBMS).
2. Description of the Related Art
Parallel computing continues to grow in importance and popularity in the computing industry, becoming more and more common in a variety of settings. These parallel computing systems, whether executed with multiple processors or with multicore processors, are capable of simultaneously executing sets of programming instructions. As a result, a parallel computing system can offer significant performance advantages over a single processor or single core computer.
Sorting and indexing operations performed by a database management system (DBMS) are particularly suited to realize gains in a parallel computing system. However, many processing operations, particularly sorting and indexing operations, require pre-allocated disk space to predictably succeed. In addition, parallel operations require virtual storage (also commonly referred to as virtual memory) in order to support concurrent processes.
Those of skill in the art will recognize that sorting data requires disk space in the form of sort files. Opening and accessing a sort file during a sorting operation uses virtual storage. The more files that are opened, the more virtual storage is consumed. In addition, the execution of parallel operations also imposes costs in terms of virtual storage. However, in most present systems, a user such as a database administrator is left to guess at how best to allocate the sort disk space in a given system. For example, when the operation makes use of a sort component such as DFSORT in the IBM DB2 for z/OS environment, the user specifies the number of sort files to be allocated to each sort within a particular job. However, if the user enters a value that is too large, more virtual storage is allocated than the task requires, and the ability to execute the operations in parallel may be negatively impacted. If the value is too small, the job ends and the user simply has to try a different value. To add to the complications, virtual storage 114 is a volatile quantity, and availability can vary widely from one moment to the next depending on what operations are being executed.